/*
 * MPA : Fichier comportant toutes les fonctions liées aux salles 
 * 
 */

//Variable globale de la salle sélectionnée
var idRoom = "9999";

function setSelectedRoom(idSalle){
    idRoom = idSalle;
    return idRoom;
}

function getSelectedRoom(){
    return idRoom;
}

function infosSalle(){
    window.openDialog('chrome://reserveit/content/reserve/infos_room.xul','_blank','chrome,centerscreen,modal');
}

//
function getVboxOverlay(){
    vbox = document.getElementById("form_room");
}

//fonction permettant de récupérer la liste des salles présentes en base de données
function getListSalles(){
    //Requete pour la récupération des salles
    var requeteSql = "SELECT idRoom, name FROM room ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    
    var menuPopupSalle = document.getElementById("menuPopupSalleComboBox");
    while(statement.step()){
        var menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idRoom);
        menuPopupSalle.appendChild(menuItem);
    }
}

function getListSallesAddEvent(){
    //Requete pour la récupération des salles
    var requeteSql = "SELECT * FROM room ORDER BY name";
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    
    var menuPopupSalle = document.getElementById("event-grid-select-room-list-popup");
    var menuItem;
    
    while(statement.step()){
    	//var tooltipText = "Lieu : " + "\n" + statement.row.building + " Etage :" + statement.row.floor + " Capacité :" + statement.row.capacity + " Nombre de tables :" + statement.row.table + " Nombre de chaises :" + statement.row.chair + " Video projecteur :" + statement.row.videoprojector + " Telephone :" + statement.row.telephone;
        var tooltipText = "Lieu : " + statement.row.building + " - Etage : " + statement.row.floor + " - Capacité : " + statement.row.capacity + " - Video projecteur : " + isPresent(statement.row.videoprojector) + " - Telephone : " + isPresent(statement.row.telephone);
	menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", statement.row.name);
        menuItem.setAttribute("value", statement.row.idRoom);
        menuItem.setAttribute("tooltiptext", tooltipText);
        menuPopupSalle.appendChild(menuItem);
    }
}

function getInfosSalle(idSalle){
    //Requete pour la récupération des salles
    var requeteSql = "SELECT * FROM room WHERE idRoom="+idSalle;
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    while(statement.step()){
        document.getElementById("nomSalle").value = statement.row.name;
        document.getElementById("lieuSalle").value = statement.row.building;
        document.getElementById("etageSalle").value = statement.row.floor;
        document.getElementById("capaciteSalle").value = statement.row.capacity;
        document.getElementById("nbTableSalle").value = statement.row.table;
        document.getElementById("nbChaiseSalle").value = statement.row.chair;
        document.getElementById("videoProjSalle").value = isPresent(statement.row.videoprojector);
	document.getElementById("telephoneSalle").value = isPresent(statement.row.telephone);
    }    
}

function getInfosSalle2(idSalle){
    //Requete pour la récupération des salles
    var requeteSql = "SELECT * FROM room WHERE idRoom="+idSalle;
    //exécution de la requete et récupération des données
    var statement = executeReqSql(requeteSql);
    //affichage des données
    while(statement.step()){
        document.getElementById("nomSalle").value = statement.row.name;
        document.getElementById("lieuSalle").value = statement.row.building;
        document.getElementById("etageSalle").value = statement.row.floor;
        document.getElementById("capaciteSalle").value = statement.row.capacity;
        document.getElementById("nbTableSalle").value = statement.row.table;
        document.getElementById("nbChaiseSalle").value = statement.row.chair;
        document.getElementById("videoProjComboBox").value = statement.row.videoprojector;
	document.getElementById("telephoneComboBox").value = statement.row.telephone;
    }    
}

function addRoomOpenWindow(){
    window.openDialog('chrome://reserveit/content/reserve/add_room.xul','_blank','chrome,centerscreen,modal');
}

function addRoom(){
		
    //Récupération des champs
    var nSalle = document.getElementById("nomSalle").value; 
    var lSalle = document.getElementById("lieuSalle").value;
    var eSalle = document.getElementById("etageSalle").value;
    var cSalle = document.getElementById("capaciteSalle").value;
    var ntSalle = document.getElementById("nbTableSalle").value;
    var ncSalle = document.getElementById("nbChaiseSalle").value;
    var vSalle = document.getElementById("videoProjComboBox").value;
    var teSalle = document.getElementById("telephoneComboBox").value;
    
    //test si le formulaire est valide
    if(validateFormAddRoom(nSalle, lSalle, eSalle, cSalle, ntSalle, ncSalle, vSalle, teSalle)){
	if (confirm("Voulez-vous ajouter cette salle ?"))
	{
	    //Requete pour la récupération des salles
	    var requeteSql = "INSERT INTO room ('name','capacity','building','floor','videoprojector','table','chair','telephone') VALUES (:nRoom,:cRoom,:bRoom,:fRoom,:vRoom,:tRoom,:chRoom,:teRoom)";
    
	    //Exécution de la requete et récupération des données
	    var arraySql = insertReqSql(requeteSql);
	    var db = arraySql[0];
	    var statement = arraySql[1];
	
	    statement.initialize(db.createStatement(requeteSql));
	    
	    statement.params.nRoom = nSalle;
	    statement.params.cRoom = cSalle;
	    statement.params.bRoom = lSalle;
	    statement.params.fRoom = eSalle;
	    statement.params.vRoom = vSalle;
	    statement.params.tRoom = ntSalle;
	    statement.params.chRoom = ncSalle;
	    statement.params.teRoom = teSalle;
    
	    statement.step();
	    
	    alert("Salle ajoutée avec succès");
	    window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
	    window.close();
	}
	else
	{
	    alert("Salle non ajoutée");
	}
    }
}

function editRoomOpenWindow(){
	
    if (document.getElementById("salleComboBox").value!="#") {
	window.openDialog('chrome://reserveit/content/reserve/edit_room.xul','_blank','chrome,centerscreen,modal',idRoom);
    }else{
	alert("Veuillez sélectionner une salle")
    }
}

function editRoom(idSalle){
    //Récupération des champs
    var nSalle = document.getElementById("nomSalle").value; 
    var cSalle = document.getElementById("capaciteSalle").value;
    var lSalle = document.getElementById("lieuSalle").value;
    var eSalle = document.getElementById("etageSalle").value;
    var vSalle = document.getElementById("videoProjComboBox").value;
    var ntSalle = document.getElementById("nbTableSalle").value;
    var ncSalle = document.getElementById("nbChaiseSalle").value;
    var teSalle = document.getElementById("telephoneComboBox").value;
    //test si le formulaire est valide

    if(validateFormAddRoom(nSalle, lSalle, eSalle, cSalle, ntSalle, ncSalle, vSalle, teSalle)){
	if (confirm("Voulez-vous modifier cette salle ?"))
	{
		//recuperation des lignes de réservation
	    var requeteSql = "SELECT * FROM reservation WHERE idRoom="+idSalle;
	    var tmp = 0;
	    var tmp2 = 0;
	    //exécution de la requete et récupération des données
	    var statement = executeReqSql(requeteSql);
	    //récupération des données
	    while(statement.step()){
	    	tmp = tmp + 1;
        	var dateReturnTS = statement.row.dateReturn  / 1000;
        	var today = new Date().getTime();
	    	if(dateReturnTS < today){
	    		tmp2 = tmp2 + 1;
	    	}
	    }
	    
	  //test si toutes les salles ont des réservations dépassées
    	if(tmp == tmp2){
    		//suppression des reservations
    		var requeteSql = "DELETE FROM reservation WHERE idRoom="+idSalle;
			
			var arraySql = insertReqSql(requeteSql);
	    	var db = arraySql[0];
	    	var statement = arraySql[1];
	
			statement.initialize(db.createStatement(requeteSql));
			statement.step();
			
			//update de la salle
			var requeteSql = "UPDATE room SET 'name'=:nSalle,'capacity'=:cSalle,'building'=:lSalle,'floor'=:eSalle,'videoprojector'=:vSalle,'table'=:ntSalle,'chair'=:ncSalle,'telephone'=:teSalle WHERE idRoom="+idSalle;
		    var arraySql = insertReqSql(requeteSql);
		    var db = arraySql[0];
		    var statement = arraySql[1];
		    
		    statement.initialize(db.createStatement(requeteSql));
		    
		    statement.params.nSalle = nSalle;
		    statement.params.cSalle = cSalle;
		    statement.params.lSalle = lSalle;
		    statement.params.eSalle = eSalle;
		    statement.params.vSalle = vSalle;
		    statement.params.ntSalle = ntSalle;
		    statement.params.ncSalle = ncSalle;
		    statement.params.teSalle = teSalle;
	    
		    statement.step();
		    
		    alert("Salle modifiée avec succès");
		    window.opener.location="chrome://reserveit/content/admin/interface_admin.xul";
		    window.close();
    	}
    	else{
    		alert("Salle non modifiée car demandée pour une réunion qui n'a pas encore eu lieu !!!");
    	}
	}
	else
	{
	    alert("Salle non modifiée");
	}
    }
}

function deleteRoom(idSalle){
	 if (document.getElementById("salleComboBox").value!="#") {
	    //Requete pour la récupération des salles
	    if (confirm("Voulez-vous supprimer cette salle ?"))
	    {	
	    	//recuperation des lignes de réservation
		    var requeteSql = "SELECT * FROM reservation WHERE idRoom="+idSalle;
		    var tmp = 0;
		    var tmp2 = 0;
		    //exécution de la requete et récupération des données
		    var statement = executeReqSql(requeteSql);
		    //récupération des données
		    while(statement.step()){
		    	tmp = tmp + 1;
	        	var dateReturnTS = statement.row.dateReturn  / 1000;
	        	var today = new Date().getTime();
		    	if(dateReturnTS < today){
		    		tmp2 = tmp2 + 1;
		    	}
		    }
		    
		  //test si toutes les salles ont des réservations dépassées
	    	if(tmp == tmp2){
	    		//suppression des reservations
	    		var requeteSql = "DELETE FROM reservation WHERE idRoom="+idSalle;
				
				var arraySql = insertReqSql(requeteSql);
		    	var db = arraySql[0];
		    	var statement = arraySql[1];
		
				statement.initialize(db.createStatement(requeteSql));
				statement.step();
				
				//suppression de la salle
				var requeteSql = "DELETE FROM room WHERE idRoom="+idSalle;
				var arraySql = insertReqSql(requeteSql);
				var db = arraySql[0];
				var statement = arraySql[1];
				
				statement.initialize(db.createStatement(requeteSql));
				statement.step();
				
				alert("Salle supprimée avec succès");
				
				//reset de la combobox
				resetComboBox(document.getElementById("menuPopupSalleComboBox"), "Sélectionnez une salle");
				//chargement des salles
				getListSalles();
				//reset des champs infos
				document.getElementById("salleComboBox").value = "#";
				document.getElementById("nomSalle").value = ""; 
				document.getElementById("capaciteSalle").value = "";
				document.getElementById("lieuSalle").value = "";
				document.getElementById("etageSalle").value = "";
				document.getElementById("videoProjSalle").value = "";
				document.getElementById("nbTableSalle").value = "";
				document.getElementById("nbChaiseSalle").value = "";
				document.getElementById("telephoneSalle").value = "";
	    	}
	    	else{
	    		alert("Salle non supprimée car demandée pour une réunion qui n'a pas encore eu lieu !!!");
	    	}
	    }
	    else
	    {
	    	alert("Salle non supprimée");
	    }
	 }else{
         alert("Veuillez sélectionner une salle");
     }
	 
}
 
/*
 * MPA : Fonction ouvrant le planning des salles pour en voir leur disponiblé
 */ 
function openPlanningRooms(){
	window.openDialog('chrome://reserveit/content/reserve/planning_room.xul','_blank','chrome,centerscreen,modal');
}
 
/*
 * MPA : fonction de remplissage du planning
 */ 
function fillPlanningRooms(){
    var requeteSql = "SELECT idRoom, name FROM room ORDER BY name";
    var statement = executeReqSql(requeteSql);
    var hboxListRooms = document.getElementById("hbox-list-rooms");
   
    while(statement.step()){
        var hboxRooms = document.createElement("hbox");
    	var labelRooms = document.createElement("label");
        labelRooms.setAttribute("value", statement.row.name);
        
        var idRoomSelected = statement.row.idRoom;
        //dump("idRoomSelected = "+idRoomSelected+"\n");
        var requeteSqlReservation = "SELECT distinct idEvent, dateReservation, dateReturn FROM reservation WHERE idRoom="+idRoomSelected;
        var statementReservation = executeReqSql(requeteSqlReservation);
        
        hboxRooms.appendChild(labelRooms);
                  
        while(statementReservation.step()){
        	var labelReservation = document.createElement("label");		
                	
        	var dateBeginTS = statementReservation.row.dateReservation;
        	var dateReturnTS = statementReservation.row.dateReturn;
        	//dump("dateBookedTS = "+dateBookedTS+"\n");
        	//dump(typeof dateBookedTS);
        	//dump("\n");
        	//var dateBookedNormal = dateBookedTS.toString();
        	//dump("dateBookedNormal = "+dateBookedNormal.substring(0,10)+"\n");
        	
        	//dump("dateBookedTS = "+statementReservation.row.dateReservation+"\n")
        	//dump("dateBookedConv = "+dateBookedTS+"\n");
        	
        	//var dateOK = new Date(dateBookedNormal);
        	dateBeginTS = dateBeginTS/1000000;
        	var dateBeginOK = showLocalDate(dateBeginTS);
        	
        	dateReturnTS = dateReturnTS/1000000;
        	var dateReturnOK = showLocalDate(dateReturnTS);
        	
        	//dump("dateOK = "+dateOK+"\n");
        	var dateBooked = dateBeginOK+" au "+dateReturnOK;
        	labelReservation.setAttribute("value", dateBooked);
        	//labelReservation.setAttribute("id", statementReservation.row.idReservation);
        	hboxRooms.appendChild(labelReservation);
        	//labelReservation.setAttribute("value", statementReservation.row.dateReservation);
        } 
        
        hboxListRooms.appendChild(hboxRooms);
    
    }
}

function isPresent(val){
    if(val=="true"){
        return "Oui";
    }else{
        return "Non";
    }
}
 
 